home *** CD-ROM | disk | FTP | other *** search
/ CleanSweep for Windows / CleanSweep for Windows v1.0.img / SETUP.MS_ / SETUP.MS
Text File  |  1995-03-06  |  8KB  |  294 lines

  1. '**************************************************************************
  2. '*                  MSSetup Toolkit Quarterdeck CleanSweep
  3. '**************************************************************************
  4.  
  5. GLOBAL TITLE$
  6. GLOBAL DEFAULTDESTDIR$
  7. GLOBAL UNIN_INI$
  8. GLOBAL UNIN_EXE$
  9. GLOBAL UNINUNIN_EXE$
  10. GLOBAL README_TXT$
  11. GLOBAL GROUP_NAME$
  12. GLOBAL UNIN_ITEM$
  13. GLOBAL UNINUNIN_ITEM$
  14. GLOBAL README_ITEM$
  15.  
  16. ''==========================================================================
  17. '' Translate these strings
  18. ''
  19. '' The 3 strings at the end are the names of the items within the 
  20. '' Quarterdeck CleanSweep group within Program Manager.
  21. ''==========================================================================
  22. TITLE$           = "Quarterdeck CleanSweep Setup"
  23. DEFAULTDESTDIR$  = "C:\CLNSWEEP"
  24. UNIN_INI$        = "clnsweep.ini"
  25. UNIN_EXE$        = "clnsweep.exe"
  26. UNINUNIN_EXE$    = "unclnswp.exe"
  27. README_TXT$      = "readme.wri"
  28. GROUP_NAME$      = "Quarterdeck CleanSweep"             '' Group Name
  29. UNIN_ITEM$       = "Quarterdeck CleanSweep"             '' Item Name
  30. UNINUNIN_ITEM$   = "Uninstall Quarterdeck CleanSweep"   '' Item Name
  31. README_ITEM$     = "Read Me"                            '' Item Name
  32. ''==========================================================================
  33. '' End of strings to translate
  34. ''==========================================================================
  35.  
  36. '$INCLUDE 'setupapi.inc'
  37. '$INCLUDE 'msdetect.inc'
  38.  
  39. ''Dialog ID's
  40. CONST WELCOME       = 100
  41. CONST ASKQUIT       = 200
  42. CONST DESTPATH      = 300
  43. CONST EXITFAILURE   = 400
  44. CONST EXITSUCCESS   = 700
  45. CONST APPHELP_REG   = 900
  46. CONST APPHELP_PATH  = 1000
  47. CONST APPHELP_WELCOME = 1010
  48. CONST BADPATH       = 6400
  49. CONST FULLDRIVE     = 6410
  50. CONST CDGETNAMEORG  = 7500
  51.  
  52. ''Bitmap ID
  53. CONST LOGO = 1
  54.  
  55. GLOBAL DEST$        ''Default destination directory.
  56. GLOBAL custname$
  57. GLOBAL orgname$
  58. GLOBAL SrcDir$
  59.  
  60. DECLARE SUB Install
  61. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  62.  
  63. DECLARE FUNCTION Ctl3dRegister LIB "ctl3d.dll" (hInst%) AS INTEGER
  64. DECLARE FUNCTION Ctl3dUnregister LIB "ctl3d.dll" (hInst%) AS INTEGER
  65. DECLARE FUNCTION Ctl3dAutoSubclass LIB "ctl3d.dll" (hInst%) AS INTEGER
  66.  
  67. DECLARE FUNCTION Register_File LIB "qreg.dll" (szFile$) AS INTEGER
  68.  
  69. DECLARE FUNCTION GetModuleHandle LIB "kernel" (szModule$) AS INTEGER
  70. DECLARE FUNCTION LoadString LIB "user" (hInst%, id%, szBuffer$, cbBuffer%) AS INTEGER
  71. DECLARE FUNCTION ShowWindow LIB "user" (hWnd%, nShow%) AS INTEGER
  72.  
  73. INIT:
  74.     hInstance% = HinstFrame()
  75.     hWnd% = HwndFrame()
  76.     junk%=ShowWindow(hWnd%, 3)
  77.     ret = Ctl3dRegister(hInstance%)
  78.     ret = Ctl3dAutoSubclass(hInstance%)
  79.  
  80.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  81.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  82.  
  83.     SetBitmap CUIDLL$, LOGO
  84.     SetTitle TITLE$
  85.  
  86.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  87.     IF szInf$ = "" THEN
  88.         szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF"
  89.     END IF
  90.     ReadInfFile szInf$
  91.  
  92.     DEST$ = DEFAULTDESTDIR$
  93.  
  94.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  95.  
  96. WELCOME:
  97.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", 0, "")
  98.     IF sz$="CONTINUE" THEN
  99.         UIPop 1
  100.     ELSE
  101.         GOSUB ASKQUIT    
  102.         GOTO WELCOME
  103.     END IF
  104.  
  105.  
  106. GETNAMEORG:
  107.     '' Get user/company from user.exe
  108.     hInst% = GetModuleHandle("user")
  109.     custname$ = ""
  110.     orgname$ = ""
  111.     IF hInst% <> 0 THEN
  112.         custname$ = String$(255, 0)
  113.         ret = LoadString(hInst%, 514, custname$, Len(custname$))
  114.  
  115.         orgname$ = String$(255, 0)
  116.         ret = LoadString(hInst%, 515, orgname$, Len(orgname$))
  117.  
  118.         custname$ = RTRIM$(custname$)
  119.         orgname$ = RTRIM$(orgname$)
  120.         IF UCASE$(orgname$) = "UNKNOWN ORGANIZATION" THEN
  121.             orgname$ = ""
  122.         END IF
  123.     END IF
  124.     
  125.     '' Try to get registration info from MS User Info section in WIN.INI
  126.     IF custname$ = "" THEN
  127.         custname$ = GetIniKeyString("WIN.INI", "MS User Info", "DefName")
  128.         orgname$  = GetIniKeyString("WIN.INI", "MS User Info", "DefCompany")
  129.     END IF
  130.  
  131.     custname$ = RTRIM$(custname$)
  132.     orgname$ = RTRIM$(orgname$)
  133.  
  134.     SetSymbolValue "CUSTNAME", custname$
  135.     SetSymbolValue "ORGNAME", orgname$
  136.     sz$ = UIStartDlg(CUIDLL$, CDGETNAMEORG, "FNameOrgDlgProc", APPHELP_REG, HELPPROC$)
  137.     IF sz$="CONTINUE" THEN
  138.         UIPop 1
  139.     ELSE
  140.         GOSUB ASKQUIT    
  141.         GOTO GETNAMEORG
  142.     END IF
  143.  
  144. GETPATH:
  145.     SetSymbolValue "EditTextIn", DEST$
  146.  
  147. GETPATHL1:
  148.     SetSymbolValue "EditFocus", "ALL"
  149.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP_PATH, HELPPROC$)
  150.     DEST$ = GetSymbolValue("EditTextOut")
  151.  
  152.     IF sz$ = "CONTINUE" THEN
  153.         IF IsDirWritable(DEST$) = 0 THEN
  154.             GOSUB BADPATH
  155.             GOTO GETPATHL1
  156.         END IF
  157.         
  158.         '' Make sure enough space on destination
  159.         ClearCopyList
  160.         AddSectionFilesToCopyList "Files", SrcDir$, DEST$
  161.         cost& = GetCopyListCost("","","")
  162.         '' Add 1 cluster 16K, to account for INI file.
  163.         cost& = cost& + 16384
  164.         IF cost& > GetFreeSpaceForDrive(ucase$(MID$(DEST$, 1, 1))) THEN
  165.             GOSUB FULLDRIVE
  166.             SetSymbolValue "EditTextIn", DEST$
  167.             GOTO GETPATHL1
  168.         ENDIF
  169.         UIPop 1
  170.     ELSEIF sz$ = "REACTIVATE" THEN
  171.         GOTO GETPATHL1
  172.     ELSE
  173.         GOSUB ASKQUIT
  174.         GOTO GETPATH
  175.     END IF
  176.  
  177.  
  178.     Install
  179.  
  180.  
  181. QUIT:
  182.     ON ERROR GOTO ERRQUIT
  183.  
  184.     IF ERR = 0 THEN
  185.         dlg% = EXITSUCCESS
  186.     ELSEIF ERR = STFQUIT THEN
  187.         dlg% = 0
  188.     ELSE
  189.         dlg% = EXITFAILURE
  190.     END IF
  191. QUITL1:
  192.     IF dlg% <> 0 THEN
  193.         sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  194.         IF sz$ = "REACTIVATE" THEN
  195.             GOTO QUITL1
  196.         END IF
  197.         UIPop 1
  198.     END IF
  199.  
  200. ExitInstance:
  201.     ret = Ctl3dUnregister(hInstance%)
  202.  
  203.     END
  204.  
  205. ERRQUIT:
  206.     GOTO ExitInstance
  207.  
  208.  
  209. BADPATH:
  210.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  211.     IF sz$ = "REACTIVATE" THEN
  212.         GOTO BADPATH
  213.     END IF
  214.     UIPop 1
  215.     RETURN
  216.  
  217. FULLDRIVE:
  218.     sz$ = UIStartDlg(CUIDLL$, FULLDRIVE, "FInfo0DlgProc", 0, "")
  219.     IF sz$ = "REACTIVATE" THEN
  220.         GOTO FULLDRIVE
  221.     END IF
  222.     UIPop 1
  223.     RETURN
  224.  
  225.  
  226.  
  227.  
  228. ASKQUIT:
  229.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  230.  
  231.     IF sz$ = "EXIT" THEN
  232.         UIPopAll
  233.         ERROR STFQUIT
  234.     ELSEIF sz$ = "REACTIVATE" THEN
  235.         GOTO ASKQUIT
  236.     ELSE
  237.         UIPop 1
  238.     END IF
  239.     RETURN
  240.  
  241.  
  242.  
  243. '**
  244. '** Purpose:
  245. '**     Builds the copy list and performs all installation operations.
  246. '** Arguments:
  247. '**     none.
  248. '** Returns:
  249. '**     none.
  250. '*************************************************************************
  251. SUB Install STATIC
  252.  
  253.     WindowsDir$ = GetWindowsDir()
  254.     CreateDir DEST$, cmoNone
  255.  
  256.     '' Most of files already in Copy List
  257.     AddSectionFilesToCopyList "IniFiles", SrcDir$, WindowsDir$
  258.     CopyFilesInCopyList
  259.  
  260.     nErr% = Register_File(MakePath(DEST$,UNIN_EXE$))
  261.  
  262.     CreateProgmanGroup GROUP_NAME$, "", cmoNone
  263.     ShowProgmanGroup   GROUP_NAME$, 1, cmoNone
  264.     CreateProgmanItem  GROUP_NAME$, UNIN_ITEM$, MakePath(DEST$,UNIN_EXE$), "", cmoOverwrite
  265.     CreateProgmanItem  GROUP_NAME$, UNINUNIN_ITEM$, MakePath(DEST$,UNINUNIN_EXE$), "", cmoOverwrite
  266.     CreateProgmanItem  GROUP_NAME$, README_ITEM$, MakePath(DEST$,README_TXT$), "", cmoOverwrite
  267.  
  268. END SUB
  269.  
  270.  
  271.  
  272. '**
  273. '** Purpose:
  274. '**     Appends a file name to the end of a directory path,
  275. '**     inserting a backslash character as needed.
  276. '** Arguments:
  277. '**     szDir$  - full directory path (with optional ending "\")
  278. '**     szFile$ - filename to append to directory
  279. '** Returns:
  280. '**     Resulting fully qualified path name.
  281. '*************************************************************************
  282. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  283.     IF szDir$ = "" THEN
  284.         MakePath = szFile$
  285.     ELSEIF szFile$ = "" THEN
  286.         MakePath = szDir$
  287.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  288.         MakePath = szDir$ + szFile$
  289.     ELSE
  290.         MakePath = szDir$ + "\" + szFile$
  291.     END IF
  292. END FUNCTION
  293.  
  294.